The Coronavirus Dashboard: the case of Argentina
This Coronavirus dashboard: the case of Argentina provides an overview of the 2019 Novel Coronavirus COVID-19 (2019-nCoV) epidemic for Argentina. This dashboard is built with R using the R Makrdown framework and was adapted from this dashboard by Rami Krispin.
Code
The code behind this dashboard is available on GitHub.
Data
The input data for this dashboard is the dataset available from the {coronavirus} R package. Make sure to download the development version of the package to have the latest data:
install.packages("devtools")
devtools::install_github("RamiKrispin/coronavirus")
The data and dashboard are refreshed on a daily basis.
The raw data is pulled from the Johns Hopkins University Center for Systems Science and Engineering (JHU CCSE) Coronavirus repository.
Contact
For any question or feedback, you can contact me. More information about this dashboard can be found in this article.
Update
The data is as of jueves marzo 26, 2020 and the dashboard has been updated on sábado marzo 28, 2020.
Go back to www.statsandr.com (blog) or www.antoinesoetewey.com (personal website).
---
title: "Coronavirus en Chubut (Argentina)"
author: "Ministerio de Salud de Chubut"
output:
flexdashboard::flex_dashboard:
orientation: rows
# social: ["facebook", "twitter", "linkedin"]
source_code: embed
vertical_layout: fill
---
```{r setup, include=FALSE}
#------------------ Packages ------------------
library(flexdashboard)
# install.packages("devtools")
# devtools::install_github("RamiKrispin/coronavirus", force = TRUE)
library(coronavirus)
data(coronavirus)
update_datasets()
# View(coronavirus)
# max(coronavirus$date)
`%>%` <- magrittr::`%>%`
#------------------ Parameters ------------------
# Set colors
# https://www.w3.org/TR/css-color-3/#svg-color
confirmed_color <- "purple"
active_color <- "#1f77b4"
recovered_color <- "forestgreen"
death_color <- "red"
#------------------ Data ------------------
# df <- coronavirus %>%
# # dplyr::filter(date == max(date)) %>%
# dplyr::filter(Country.Region == "Argentina") %>%
# dplyr::group_by(Country.Region, type) %>%
# dplyr::summarise(total = sum(cases)) %>%
# tidyr::pivot_wider(
# names_from = type,
# values_from = total
# ) %>%
# # dplyr::mutate(unrecovered = confirmed - ifelse(is.na(recovered), 0, recovered) - ifelse(is.na(death), 0, death)) %>%
# dplyr::mutate(unrecovered = confirmed - ifelse(is.na(death), 0, death)) %>%
# dplyr::arrange(-confirmed) %>%
# dplyr::ungroup() %>%
# dplyr::mutate(country = dplyr::if_else(Country.Region == "United Arab Emirates", "UAE", Country.Region)) %>%
# dplyr::mutate(country = dplyr::if_else(country == "Mainland China", "China", country)) %>%
# dplyr::mutate(country = dplyr::if_else(country == "North Macedonia", "N.Macedonia", country)) %>%
# dplyr::mutate(country = trimws(country)) %>%
# dplyr::mutate(country = factor(country, levels = country))
df <- read.csv2("/mnt/28EC75CE33EA541A/temporales/Coronavirus/estadisticas/tablas_de_entrada/df.csv")
# df_daily <- coronavirus %>%
# dplyr::filter(Country.Region == "Argentina") %>%
# dplyr::group_by(date, type) %>%
# dplyr::summarise(total = sum(cases, na.rm = TRUE)) %>%
# tidyr::pivot_wider(
# names_from = type,
# values_from = total
# ) %>%
# dplyr::arrange(date) %>%
# dplyr::ungroup() %>%
# #dplyr::mutate(active = confirmed - death - recovered) %>%
# dplyr::mutate(active = confirmed - death) %>%
# dplyr::mutate(
# confirmed_cum = cumsum(confirmed),
# death_cum = cumsum(death),
# # recovered_cum = cumsum(recovered),
# active_cum = cumsum(active)
# )
df_daily <- read.csv2("/mnt/28EC75CE33EA541A/temporales/Coronavirus/estadisticas/tablas_de_entrada/df_daily.csv")
# df1 <- coronavirus %>% dplyr::filter(date == max(date))
df1 <- read.csv2("/mnt/28EC75CE33EA541A/temporales/Coronavirus/estadisticas/tablas_de_entrada/df1.csv")
```
Summary
=======================================================================
Row {data-width=400}
-----------------------------------------------------------------------
### confirmed {.value-box}
```{r}
valueBox(
value = paste(format(sum(df$confirmed), big.mark = ","), "", sep = " "),
caption = "Total confirmed cases",
icon = "fas fa-user-md",
color = confirmed_color
)
```
### death {.value-box}
```{r}
valueBox(
value = paste(format(sum(df$death, na.rm = TRUE), big.mark = ","), " (",
round(100 * sum(df$death, na.rm = TRUE) / sum(df$confirmed), 1),
"%)",
sep = ""
),
caption = "Death cases (death rate)",
icon = "fas fa-heart-broken",
color = death_color
)
```
Row
-----------------------------------------------------------------------
### **Daily cumulative cases by type** (Argentina only)
```{r}
plotly::plot_ly(data = df_daily) %>%
plotly::add_trace(
x = ~date,
# y = ~active_cum,
y = ~confirmed_cum,
type = "scatter",
mode = "lines+markers",
# name = "Active",
name = "Confirmed",
line = list(color = active_color),
marker = list(color = active_color)
) %>%
plotly::add_trace(
x = ~date,
y = ~death_cum,
type = "scatter",
mode = "lines+markers",
name = "Death",
line = list(color = death_color),
marker = list(color = death_color)
) %>%
plotly::add_annotations(
x = as.Date("2020-02-04"),
y = 1,
text = paste("First case"),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -10,
ay = -90
) %>%
plotly::add_annotations(
x = as.Date("2020-03-11"),
y = 3,
text = paste("First death"),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -90,
ay = -90
) %>%
plotly::add_annotations(
x = as.Date("2020-03-18"),
y = 14,
text = paste(
"New containment",
"",
"measures"
),
xref = "x",
yref = "y",
arrowhead = 5,
arrowhead = 3,
arrowsize = 1,
showarrow = TRUE,
ax = -10,
ay = -90
) %>%
plotly::layout(
title = "",
yaxis = list(title = "Cumulative number of cases"),
xaxis = list(title = "Date"),
legend = list(x = 0.1, y = 0.9),
hovermode = "compare"
)
```
Comparison
=======================================================================
Column {data-width=400}
-------------------------------------
### **Daily new confirmed cases**
```{r}
# daily_confirmed <- coronavirus %>%
# dplyr::filter(type == "confirmed") %>%
# dplyr::filter(date >= "2020-02-29") %>%
# dplyr::mutate(country = Country.Region) %>%
# dplyr::group_by(date, country) %>%
# dplyr::summarise(total = sum(cases)) %>%
# dplyr::ungroup() %>%
# tidyr::pivot_wider(names_from = country, values_from = total)
#
# #----------------------------------------
# # Plotting the data
#
# daily_confirmed %>%
# plotly::plot_ly() %>%
# plotly::add_trace(
# x = ~date,
# y = ~Argentina,
# type = "scatter",
# mode = "lines+markers",
# name = "Argentina"
# ) %>%
# plotly::add_trace(
# x = ~date,
# y = ~France,
# type = "scatter",
# mode = "lines+markers",
# name = "France"
# ) %>%
# plotly::add_trace(
# x = ~date,
# y = ~Spain,
# type = "scatter",
# mode = "lines+markers",
# name = "Spain"
# ) %>%
# plotly::add_trace(
# x = ~date,
# y = ~Italy,
# type = "scatter",
# mode = "lines+markers",
# name = "Italy"
# ) %>%
# plotly::layout(
# title = "",
# legend = list(x = 0.1, y = 0.9),
# yaxis = list(title = "Number of new confirmed cases"),
# xaxis = list(title = "Date"),
# # paper_bgcolor = "black",
# # plot_bgcolor = "black",
# # font = list(color = 'white'),
# hovermode = "compare",
# margin = list(
# # l = 60,
# # r = 40,
# b = 10,
# t = 10,
# pad = 2
# )
# )
comparativo_provincias <- read.csv2("/mnt/28EC75CE33EA541A/temporales/Coronavirus/estadisticas/tablas_de_entrada/comparativo_provincias_acumulados.csv", sep= ";")
#colnames(comparativo_provincias)
library(viridis)
comparativo_provincias %>% ###### daily_confirmed
plotly::plot_ly() %>%
plotly::add_trace(
x = ~date,
y = ~Ciudad.Autónoma.de.Buenos.Aires,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[1],
name = "Ciudad Autónoma de Buenos Aires"
) %>%
plotly::add_trace(
x = ~date,
y = ~Buenos.Aires,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[2],
name = "Buenos.Aires"
) %>%
plotly::add_trace(
x = ~date,
y = ~Catamarca,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[3],
name = "Catamarca"
) %>%
plotly::add_trace(
x = ~date,
y = ~Chaco,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[4],
name = "Chaco"
) %>%
plotly::add_trace(
x = ~date,
y = ~Chubut,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[5],
name = "Chubut"
) %>%
plotly::add_trace(
x = ~date,
y = ~Córdoba,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[6],
name = "Córdoba"
) %>%
plotly::add_trace(
x = ~date,
y = ~Corrientes,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[7],
name = "Corrientes"
) %>%
plotly::add_trace(
x = ~date,
y = ~Entre.Ríos,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[8],
name = "Entre Ríos"
) %>%
plotly::add_trace(
x = ~date,
y = ~Formosa,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[9],
name = "Formosa"
) %>%
plotly::add_trace(
x = ~date,
y = ~Jujuy,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[10],
name = "Jujuy"
) %>%
plotly::add_trace(
x = ~date,
y = ~La.Pampa,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[11],
name = "La Pampa"
) %>%
plotly::add_trace(
x = ~date,
y = ~La.Rioja,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[12],
name = "La Rioja"
) %>%
plotly::add_trace(
x = ~date,
y = ~Mendoza,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[13],
name = "Mendoza"
) %>%
plotly::add_trace(
x = ~date,
y = ~Misiones,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[14],
name = "Misiones"
) %>%
plotly::add_trace(
x = ~date,
y = ~Neuquén,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[15],
name = "Neuquén"
) %>%
plotly::add_trace(
x = ~date,
y = ~Río.Negro,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[16],
name = "Río Negro"
) %>%
plotly::add_trace(
x = ~date,
y = ~Salta,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[17],
name = "Salta"
) %>%
plotly::add_trace(
x = ~date,
y = ~San.Juan,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[18],
name = "San Juan"
) %>%
plotly::add_trace(
x = ~date,
y = ~San.Luis,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[19],
name = "San Luis"
) %>%
plotly::add_trace(
x = ~date,
y = ~Santa.Cruz,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[20],
name = "Santa Cruz"
) %>%
plotly::add_trace(
x = ~date,
y = ~Santa.Fe,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[21],
name = "Santa Fe"
) %>%
plotly::add_trace(
x = ~date,
y = ~Santiago.del.Estero,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[22],
name = "Santiago del Estero"
) %>%
plotly::add_trace(
x = ~date,
y = ~Tierra.del.Fuego,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[23],
name = "Tierra del Fuego"
) %>%
plotly::add_trace(
x = ~date,
y = ~Tucumán,
type = "scatter", #, type = 'scatter', mode = 'none', stackgroup = 'one', fillcolor = '#F5FF8D')
mode = "none", ####lines+markers
stackgroup = 'one',
fillcolor = viridis(24)[24],
name = "Tucumán"
) %>%
plotly::layout(
title = "",
legend = list(x = 0.1, y = 0.9),
yaxis = list(title = "Number of new confirmed cases"),
xaxis = list(title = "Date"),
# paper_bgcolor = "black",
# plot_bgcolor = "black",
# font = list(color = 'white'),
hovermode = "compare",
margin = list(
# l = 60,
# r = 40,
b = 10,
t = 10,
pad = 2
)
)
```
Map
=======================================================================
### **World map of cases** (*use + and - icons to zoom in/out*)
```{r}
# map tab added by Art Steinmetz
library(leaflet)
library(leafpop)
library(purrr)
df1 <- read.csv2("/mnt/28EC75CE33EA541A/temporales/Coronavirus/estadisticas/tablas_de_entrada/df1.csv", sep=",")
df1$Long <- as.numeric(paste(df1$Long))
df1$Lat <- as.numeric(paste(df1$Lat))
cv_data_for_plot <- df1 %>%
# dplyr::filter(Country.Region == "Argentina") %>%
dplyr::filter(cases > 0) %>%
dplyr::group_by(Country.Region, Province.State, Lat, Long, type) %>%
dplyr::summarise(cases = sum(cases)) %>%
dplyr::mutate(log_cases = 2 * log(cases)) %>%
dplyr::ungroup()
cv_data_for_plot.split <- cv_data_for_plot %>% split(cv_data_for_plot$type)
pal <- colorFactor(c("orange", "red", "green"), domain = c("confirmed", "death", "recovered"))
map_object <- leaflet() %>% addProviderTiles(providers$Stamen.Toner)
names(cv_data_for_plot.split) %>%
purrr::walk(function(df) {
map_object <<- map_object %>%
addCircleMarkers(
data = cv_data_for_plot.split[[df]],
lng = ~Long, lat = ~Lat,
# label=~as.character(cases),
color = ~ pal(type),
stroke = FALSE,
fillOpacity = 0.8,
radius = ~log_cases,
popup = leafpop::popupTable(cv_data_for_plot.split[[df]],
feature.id = FALSE,
row.numbers = FALSE,
zcol = c("type", "cases", "Country.Region", "Province.State")
),
group = df,
# clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = F),
labelOptions = labelOptions(
noHide = F,
direction = "auto"
)
)
})
map_object %>%
addLayersControl(
overlayGroups = names(cv_data_for_plot.split),
options = layersControlOptions(collapsed = FALSE)
)
```
About
=======================================================================
**The Coronavirus Dashboard: the case of Argentina**
This Coronavirus dashboard: the case of Argentina provides an overview of the 2019 Novel Coronavirus COVID-19 (2019-nCoV) epidemic for Argentina. This dashboard is built with R using the R Makrdown framework and was adapted from this [dashboard](https://ramikrispin.github.io/coronavirus_dashboard/){target="_blank"} by Rami Krispin.
**Code**
The code behind this dashboard is available on [GitHub](https://github.com/AntoineSoetewey/coronavirus_dashboard){target="_blank"}.
**Data**
The input data for this dashboard is the dataset available from the [`{coronavirus}`](https://github.com/RamiKrispin/coronavirus){target="_blank"} R package. Make sure to download the development version of the package to have the latest data:
```
install.packages("devtools")
devtools::install_github("RamiKrispin/coronavirus")
```
The data and dashboard are refreshed on a daily basis.
The raw data is pulled from the Johns Hopkins University Center for Systems Science and Engineering (JHU CCSE) Coronavirus [repository](https://github.com/RamiKrispin/coronavirus-csv){target="_blank"}.
**Contact**
For any question or feedback, you can [contact me](https://www.statsandr.com/contact/). More information about this dashboard can be found in this [article](https://www.statsandr.com/blog/how-to-create-a-simple-coronavirus-dashboard-specific-to-your-country-in-r/).
**Update**
The data is as of `r format(max(coronavirus$date), "%A %B %d, %Y")` and the dashboard has been updated on `r format(Sys.time(), "%A %B %d, %Y")`.
*Go back to [www.statsandr.com](https://www.statsandr.com/) (blog) or [www.antoinesoetewey.com](https://www.antoinesoetewey.com/) (personal website)*.